﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SAAC.DTO;
using SAAC.BLL;
using System.Data;


namespace SAAC
{
    public partial class CadastroRequerimento : System.Web.UI.Page
    {
        const string MATRICULA_SESSION = "MATRICULA_SESSION";
        protected static Boolean requerimentoNovo=true;
        protected static int codigoRequerimento = -1;

        protected void Page_Load(object sender, EventArgs e)
        {
            gerenciaVisibilidadeComponentesMaster();
            if (!IsPostBack)
            {
                carregarGridAtividadesComplementares();

            }


        }

        #region gvwMeusRequerimentos

        private void carregarGridAtividadesComplementares()
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("Nome", typeof(string));
            dt.Columns.Add("Documentos", typeof(string));
            dt.Columns.Add("Informacoes", typeof(string));

            dt.Rows.Add("Estágio", "Plano de Estágio,Termo de Compromisso,Relatório", "Nenhum");
            dt.Rows.Add("Evento Ciêntifico", "Certificado", "Nenhum");
            dt.Rows.Add("Extensão", "Declaração,Relatório Final", "Nome do Orientador");
            dt.Rows.Add("Monitoria", "Relatório", "Código da Disciplina,Nome do Professor");
            dt.Rows.Add("Disciplina Livre", "Certificado", "Código da Disciplina,Código do Departamento");
            gvwAtividadesComplementares.DataSource = dt;
            gvwAtividadesComplementares.DataBind();

        }

        protected void gvwAtividadesComplementares_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlAtividade.Visible = true;
            pnlExtensao.Visible = false;
            pnlMonitoria.Visible = false;
            pnlDisciplinasLivre.Visible = false;

            txtNomeAtividade.Text = gvwAtividadesComplementares.SelectedRow.Cells[1].Text;
            txtDocumentos.Text = gvwAtividadesComplementares.SelectedRow.Cells[2].Text;

            if (gvwAtividadesComplementares.SelectedRow.Cells[1].Text.Equals("Extensão"))
                pnlExtensao.Visible = true;
            else if (gvwAtividadesComplementares.SelectedRow.Cells[1].Text.Equals("Monitoria"))
                pnlMonitoria.Visible = true;
            else if (gvwAtividadesComplementares.SelectedRow.Cells[1].Text.Equals("Disciplina Livre"))
                pnlDisciplinasLivre.Visible = true;

            btnIncluirAtividade.Visible = true;
        }

        #endregion



        private void gerenciaVisibilidadeComponentesMaster()
        {
            Menu menuAluno = (Menu)Master.FindControl("MenuAluno");
            menuAluno.Visible = true;
            Menu menuFuncionario = (Menu)Master.FindControl("MenuFuncionario");
            menuFuncionario.Visible = false;
            Menu menuProfessor = (Menu)Master.FindControl("MenuProfessor");
            menuProfessor.Visible = false;
            Menu menuColegiado = (Menu)Master.FindControl("MenuColegiado");
            menuColegiado.Visible = false; 
          

            LinkButton link = (LinkButton)Master.FindControl("lkbCadastro");
            link.Visible = false;
        }

        protected void btnFinalizarRequerimento_Click(object sender, EventArgs e)
        {
            try
            {
                var dtoRequerimento = new RequerimentoDTO();
                var bllRequerimento = new RequerimentoBLL();

                dtoRequerimento.Id = codigoRequerimento;
                dtoRequerimento.Comentarios = txtComentarios.Text;

                dtoRequerimento.Abertura = DateTime.Today;
                dtoRequerimento.Status = EStatusRequerimento.EmAnalise;

                dtoRequerimento.AlunoRequerinte = new AlunoDTO();
                dtoRequerimento.AlunoRequerinte.Matricula = (int)Session[MATRICULA_SESSION];

                bllRequerimento.Update(dtoRequerimento);
                
                lblMensagem.Text = "Requerimento Finalizado com Sucesso!";

                codigoRequerimento = -1;

                pnlCadastroRequerimento.Visible = true;
                pnlAtividade.Visible = false;
                pnlExtensao.Visible = false;
                pnlMonitoria.Visible = false;
                pnlDisciplinasLivre.Visible = false;
                hfNovoRequerimento.Value = "novo";

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private int cadastrarRequerimento()
        {
            var dtoRequerimento = new RequerimentoDTO();
            var bllRequerimento = new RequerimentoBLL();

            dtoRequerimento.Abertura = DateTime.Today;
            dtoRequerimento.Status = EStatusRequerimento.EmAnalise;
            //dtoRequerimento.Comentarios = txtComentarios.Text;

            dtoRequerimento.AlunoRequerinte = new AlunoDTO();
            dtoRequerimento.AlunoRequerinte.Matricula = (int)Session[MATRICULA_SESSION];

         
            dtoRequerimento.Id = bllRequerimento.Insert(dtoRequerimento);
            return (int)dtoRequerimento.Id;
        }

        protected void btnIncluirAtividade_Click(object sender, EventArgs e)
        {
            var dtoAtividade = new AtividadeComplementarDTO();
            var bllAtividade = new AtividadeComplementarBLL();

            dtoAtividade.CargaHoraria = Convert.ToInt32(txtCargaHoraria.Text);
            dtoAtividade.DataRealizacao = Convert.ToDateTime(txtDataRealizacao.Text);
            dtoAtividade.Instituicao = txtInstituicao.Text;
            
            if (hfNovoRequerimento.Value == "novo")
            {
                codigoRequerimento = cadastrarRequerimento();
                hfNovoRequerimento.Value = "naoNovo";
            }
            dtoAtividade.Requerimento = new RequerimentoDTO();
            dtoAtividade.Requerimento.Id = codigoRequerimento;
            bllAtividade.Insert(dtoAtividade);
            dtoAtividade = bllAtividade.Select(dtoAtividade);

            int id1, id2, id3;

            if (txtNomeAtividade.Text.Equals("Estágio"))
            {

                var dtoAnexo = new AnexoDTO();
                var bllAnexo = new AnexoBLL();

                dtoAnexo.Nome = "planoEstagio";
                bllAnexo.Insert(dtoAnexo);
                dtoAnexo = bllAnexo.Select(dtoAnexo, " idAnexo DESC");
                id1 = (int)dtoAnexo.Id;

                dtoAnexo = new AnexoDTO();
                dtoAnexo.Nome = "termoCompromisso";
                bllAnexo.Insert(dtoAnexo);
                dtoAnexo = bllAnexo.Select(dtoAnexo, " idAnexo DESC");
                id2 = (int)dtoAnexo.Id;

                dtoAnexo = new AnexoDTO();
                dtoAnexo.Nome = "relatorio";
                bllAnexo.Insert(dtoAnexo);
                dtoAnexo = bllAnexo.Select(dtoAnexo, " idAnexo DESC");
                id3 = (int)dtoAnexo.Id;

                var dtoEstagio = new EstagioDTO();
                var bllEstagio = new EstagioBLL();

                dtoEstagio.Id = dtoAtividade.Id;
                dtoEstagio.PlanoEstagio = new AnexoDTO();
                dtoEstagio.PlanoEstagio.Id = id1;
                dtoEstagio.TermoCompromisso = new AnexoDTO();
                dtoEstagio.TermoCompromisso.Id = id2;
                dtoEstagio.Relatorio = new AnexoDTO();
                dtoEstagio.Relatorio.Id = id3;

                bllEstagio.Insert(dtoEstagio);

                pnlCadastroRequerimento.Visible = true;
                pnlAtividade.Visible = false;
                pnlExtensao.Visible = false;
                pnlMonitoria.Visible = false;
                pnlDisciplinasLivre.Visible = false;
                lblMensagem.Text = "Atividade foi associado ao seu requerimento";
               
            }


            else if (txtNomeAtividade.Text.Equals("Evento Ciêntifico"))
            {
              
                var dtoAnexo = new AnexoDTO();
                var bllAnexo = new AnexoBLL();

                dtoAnexo.Nome = "certificado";
                bllAnexo.Insert(dtoAnexo);
                dtoAnexo = bllAnexo.Select(dtoAnexo, " idAnexo DESC");
                id1 = (int)dtoAnexo.Id;

                var dtoEventoCientifico = new EventoCientificoDTO();
                var bllEventoCientifico = new EventoCientificoBLL();

                dtoEventoCientifico.Id = dtoAtividade.Id;
                dtoEventoCientifico.Certificado = new AnexoDTO();
                dtoEventoCientifico.Certificado.Id = id1;

                bllEventoCientifico.Insert(dtoEventoCientifico);

                pnlCadastroRequerimento.Visible = true;
                pnlAtividade.Visible = false;
                pnlExtensao.Visible = false;
                pnlMonitoria.Visible = false;
                pnlDisciplinasLivre.Visible = false;
                lblMensagem.Text = "Atividade foi associado ao seu requerimento";
            
            
            
            }

            else if (txtNomeAtividade.Text.Equals("Extensão"))
            {
                pnlExtensao.Visible = true;

                var dtoAnexo = new AnexoDTO();
                var bllAnexo = new AnexoBLL();

                dtoAnexo.Nome = "declaracao";
                bllAnexo.Insert(dtoAnexo);
                dtoAnexo = bllAnexo.Select(dtoAnexo, " idAnexo DESC");
                id1 = (int)dtoAnexo.Id;

                dtoAnexo = new AnexoDTO();
                dtoAnexo.Nome = "relatorioFinal";
                bllAnexo.Insert(dtoAnexo);
                dtoAnexo = bllAnexo.Select(dtoAnexo, " idAnexo DESC");
                id2 = (int)dtoAnexo.Id;

              
                var dtoExtensao = new ExtensaoDTO();
                var bllExtensao = new ExtensaoBLL();

                dtoExtensao.Id = dtoAtividade.Id;
                dtoExtensao.Declaracao = new AnexoDTO();
                dtoExtensao.Declaracao.Id = id1;

                dtoExtensao.Declaracao = new AnexoDTO();
                dtoExtensao.Declaracao.Id = id2;

                dtoExtensao.Orientador = txtNomeOrientador.Text;

                bllExtensao.Insert(dtoExtensao);

                pnlCadastroRequerimento.Visible = true;
                pnlAtividade.Visible = false;
                pnlExtensao.Visible = false;
                pnlMonitoria.Visible = false;
                pnlDisciplinasLivre.Visible = false;
                lblMensagem.Text = "Atividade foi associado ao seu requerimento";
            
            }
            //else if (txtNomeAtividade.Equals("Monitoria"))
            //    pnlMonitoria.Visible = true;
            //else if (txtNomeAtividade.Equals("Disciplina Livre"))
            //    pnlDisciplinasLivre.Visible = true;

        }




    }
}